package custom.base.http;

import java.util.List;

import custom.base.entity.Dict;
import custom.base.entity.order.OrderDetail;
import custom.base.entity.order.OrderPage;
import custom.base.entity.auth.LoginUser;
import custom.base.entity.base.BaseResponse;
import custom.base.entity.company.Company;
import custom.base.entity.company.Project;
import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import retrofit2.http.Url;

/**
 * Created by cubebox on 2017/7/18.
 */

public interface AppApi {

    /**
     * 登录
     */
    @POST("system/auth/login")
    Call<BaseResponse<LoginUser>> login(@Body RequestBody body);

    /**
     * 退出登录
     */
    @POST("system/auth/logout")
    Call<BaseResponse<Object>> logout();

    /**
     * 刷新令牌
     */
    @POST("system/auth/refresh-token")
    Call<BaseResponse<LoginUser>> refreshToken(@Query("refreshToken") String refreshToken);

    /**
     * 查询用户信息
     */
    @GET("system/auth/get-permission-info")
    Call<BaseResponse<LoginUser>> getUserInfo();

    /**
     * 查询所有字典
     */
    @GET("system/dict-data/list-all-simple")
    Call<BaseResponse<List<Dict>>> getAllDictList();

    /**
     * 公司列表
     */
    @GET("trans/project-company/list-simple")
    Call<BaseResponse<List<Company>>> getCompanyList();

    /**
     * 公司项目列表
     */
    @GET("trans/project-info/list-simple")
    Call<BaseResponse<List<Project>>> getCompanyProjectList(@Query("companyId") Long companyId);

    /**
     * 订单列表
     */
    @GET("trans/order/page")
    Call<BaseResponse<OrderPage>> getOrderList(
            @Query("pageNo") Integer pageNo,
            @Query("pageSize") Integer pageSize,
            @Query("projectId") Long projectId,
            @Query("status") Integer status
    );

    /**
     * 订单详情
     */
    @GET("trans/order/get")
    Call<BaseResponse<OrderDetail>> getOrderDetail(
            @Query("id") Long id
    );

//    /**
//     * 登录
//     *
//     * @param username 是	string	用户名
//     * @param password 是	string	密码
//     */
//    @POST("system/auth/login")
//    Call<BaseResponse<LoginUser>> login(
//            @Query("username") String username,
//            @Query("password") String password,
//            @Query("captchaVerification") String captchaVerification
//    );

    /**
     * 登录
     *
     * @param username 是	string	用户名
     * @param password 是	string	密码
     */
    @GET("oa/bill/all")
    Call<BaseResponse<String>> getAll(
            @Query("username") String username,
            @Query("password") String password);

    /**
     * 登录
     *
     * @param username 是	string	用户名
     * @param password 是	string	密码
     */
    @POST("member/auth/login")
    Call<BaseResponse<String>> loginByName(
            @Query("username") String username,
            @Query("password") String password
    );

    @GET
    public Call<String> dynamicRequestGet(@Url String url);


}
